home *** CD-ROM | disk | FTP | other *** search
- ega = 1
- SCREEN 9
- IF ega THEN
- COL = 12
- COLOR COL
- FOR t = 1 TO 8
- kwd = 32
- LINE (141 + t * kwd, 10)-(139 + t * kwd + kwd, 80), 15, BF
- READ a$, B$
- LOCATE 7, 20 + t * 4: PRINT a$
- LOCATE 5, 20 + t * 4: PRINT B$
- NEXT
- offset = 5
-
- FOR t = 1 TO 6
- IF t <> 3 THEN
- LINE (140 + (kwd / 2) + t * kwd + offset, 10)-(140 + (kwd / 2) + t * kwd + kwd - offset, 50), 0, BF
- READ a$: LOCATE 3, 22 + t * 4: PRINT a$
- END IF
- NEXT
-
- END IF
-
- DATA C,Z,D,X,E,C,F,V,G,B,A,N,B,M,C,",",S,D,F,H,J
-
- LOCATE 20, 25: PRINT CHR$(27); CHR$(26); " to select active modules."
- PRINT SPACE$(18); CHR$(24); CHR$(25); " to change value - SHIFT for coarse tuning."
- PRINT SPACE$(20); "SPACE BAR toggles sound : Q to quit"
-
- CHOICE$(0) = " RANDOM "
- CHOICE$(1) = "TRIANGLE"
- CHOICE$(2) = "SAWTOOTH"
- CHOICE$(3) = " SQUARE "
- CHOICE$(4) = " RAMP "
- CHOICE = 1
- X = 8: Y = 13
- SEL = 1
- SND = 1
- COLOR 3
- LOCATE 10, 6: PRINT "FREQUENCY"
- LOCATE 10, 31: PRINT "MODULATION"
- LOCATE 9, 55: PRINT "MODULATION"
- LOCATE 10, 56: PRINT "FREQUENCY"
- MODL = 0
- BASEFREQ = 500
- bfq = 500
- DURATION = 7
- FOR SEL = 1 TO 4: GOSUB SKP: NEXT: SEL = 1: GOSUB SKP
- AG:
- GOSUB LP
- GOTO AG
- LP:
- IN$ = INKEY$
- IF INSTR("ZSXDCVGBHNJM,", IN$) <> 0 AND INL$ = IN$ THEN GOSUB FM: GOTO LP
-
- IF IN$ = "" THEN
- IF SND THEN GOSUB FM
- GOTO LP
- END IF
- IF IN$ = " " THEN SND = 1 - SND
-
- IF INSTR("Qq", IN$) <> 0 THEN END
- IF INSTR("Zz", IN$) <> 0 THEN NOTE = 0
- IF INSTR("Ss", IN$) <> 0 THEN NOTE = 1
- IF INSTR("Xx", IN$) <> 0 THEN NOTE = 2
- IF INSTR("dD", IN$) <> 0 THEN NOTE = 3
- IF INSTR("Cc", IN$) <> 0 THEN NOTE = 4
- IF INSTR("Vv", IN$) <> 0 THEN NOTE = 5
- IF INSTR("gG", IN$) <> 0 THEN NOTE = 6
- IF INSTR("bB", IN$) <> 0 THEN NOTE = 7
- IF INSTR("hH", IN$) <> 0 THEN NOTE = 8
- IF INSTR("nN", IN$) <> 0 THEN NOTE = 9
- IF INSTR("jJ", IN$) <> 0 THEN NOTE = 10
- IF INSTR("mM", IN$) <> 0 THEN NOTE = 11
- IF IN$ = "," THEN NOTE = 12
- INL$ = IN$
- bfq = INT(BASEFREQ * ((2 ^ (1 / 12)) ^ NOTE))
- LOCATE 12, 7: PRINT bfq; " "
-
- IN = ASC(RIGHT$(IN$, 1))
- IF IN = 77 AND LEN(IN$) > 1 THEN SEL = SEL + 1
- IF IN = 75 AND LEN(IN$) > 1 THEN SEL = SEL - 1
- IF SEL < 1 THEN SEL = 4
- IF SEL > 4 THEN SEL = 1
- 'LOCATE 9,1:PRINT SPACE$(79);
-
-
- SKP:
- IF SEL = 1 THEN C = 11 ELSE C = 1
- LINE (5 * X, 11 * Y + 5)-(15 * X, 13 * Y + 5), C, B
- IF SEL = 2 THEN C = 11 ELSE C = 1
- LINE (30 * X, 11 * Y + 5)-(40 * X, 13 * Y + 5), C, B
- IF SEL = 3 THEN C = 11 ELSE C = 1
- LINE (55 * X, 11 * Y + 5)-(65 * X, 13 * Y + 5), C, B
- IF SEL = 4 THEN C = 11 ELSE C = 1
- LINE (30 * X, 15 * Y + 5)-(40 * X, 17 * Y + 5), C, B
-
- IF SEL = 1 THEN
- LEAP = 1
- IF IN = 56 THEN LEAP = BASEFREQ
- IF IN = 50 THEN LEAP = BASEFREQ / 2
- IF IN = 72 OR IN = 56 THEN BASEFREQ = BASEFREQ + LEAP
- IF IN = 80 OR IN = 50 THEN BASEFREQ = BASEFREQ - LEAP
- IF BASEFREQ < 100 THEN BASEFREQ = 100
- IF BASEFREQ > 10000 THEN BASEFREQ = 10000
- bfq = INT(BASEFREQ * ((2 ^ (1 / 12)) ^ NOTE))
-
- LOCATE 12, 7: PRINT bfq
- END IF
-
- IF SEL = 2 THEN
- LEAP = 1
- IF IN = 56 OR IN = 50 THEN LEAP = 25
- IF IN = 72 OR IN = 56 THEN MODL = MODL + LEAP
- IF IN = 80 OR IN = 50 THEN MODL = MODL - LEAP
- IF MODL < 0 THEN MODL = 0
- LOCATE 12, 33: PRINT MODL
- END IF
- IF SEL = 3 THEN
- LEAP = 1
- IF IN = 56 OR IN = 50 THEN LEAP = 25
- IF IN = 72 OR IN = 56 THEN DURATION = DURATION + LEAP
- IF IN = 80 OR IN = 50 THEN DURATION = DURATION - LEAP
- IF DURATION < 1 THEN DURATION = 1
- LOCATE 12, 57: PRINT DURATION
- END IF
- IF SEL = 4 THEN
-
- IF IN = 72 THEN CHOICE = CHOICE + 1
- IF IN = 80 THEN CHOICE = CHOICE - 1
- IF CHOICE < 0 THEN CHOICE = 4
- IF CHOICE > 4 THEN CHOICE = 0
- LOCATE 16, 32: PRINT CHOICE$(CHOICE)
- END IF
-
- RETURN
- END
- FM:
- 'MODL --- MODULATION FACTOR
- 'BASEFREQ --- BASE FREQUENCY
- IF CHOICE = 0 THEN mod1 = RND * MODL
- 'TRIANGLE
- MODLP = MODL / DURATION
- IF CHOICE = 1 THEN
- MFT = MFT + MODLP
- IF MFT > MODL THEN MFT = 0
- mod1 = ABS((MODL / 2) - MFT) * 2
- END IF
- 'SAWTOOTH
- IF CHOICE = 2 THEN
- MFT = MFT + MODLP
- IF MFT > MODL THEN MFT = 0
-
- mod1 = MFT
- END IF
- 'SQUARE
- IF CHOICE = 3 THEN
- MFT = MFT + MODLP
- IF MFT > MODL THEN MFT = 0
- mod1 = 0
- IF MFT > MODL / 2 THEN mod1 = MODL
- END IF
- IF CHOICE = 4 THEN
- MFT = MFT + MODLP
- IF MFT > MODL THEN MFT = 0
- INC = 1: IF MFT > MODL / 2 THEN INC = -1
- mod1 = MODL / 2 + MFT * INC
- END IF
-
-
-
- SOUND mod1 + bfq, .1
- RETURN
-
-
- ' IF INVAL=77 THEN 'Right Arrow
- ' IF INVAL=75 THEN 'Left Arrow
- ' IF INVAL=72 THEN 'Up Arrow
- ' IF INVAL=80 THEN 'Down Arrow
-
-